home *** CD-ROM | disk | FTP | other *** search
-
- History
- ~~~~~~~
-
- First, thank you for your bug reports, comments and suggestions.
-
- Thanks to the following people (in no particular order):
- (Sorry, if I have forgotten someone and for misspelled names).
-
- Gunther Nikl, Veli Nuutimäki, Eric Augustine, Laura Mahony,
- Marco Nelissen, Jarkko Vatjus-Anttila, Yambo.
- ...And all the rest who have send bug reports and comments.
-
- MM's thanks: to Sensei for SNMAOptsMUI and to Noxis for testing and ideas.
-
-
- VNEXT
- MM's changes:
- o added get and opts directives
- o added SNMA.ced script to distribution
- o rewrote AREXX SET command to make it work ;)
- o added FOPT/T (SNMAOPT F) and JOPT/T (SNMAOPT J) to template,
- SNMAOPTIONS file and AREXX SET command
- o fixed quote parsing routine so things like "dc.b 'blah ''%s''',0"
- now work ok.
- o added long year extension to DATE macro
- o fixed tons of bugs in more complex modes (see FixList.txt)
- o added support for 68060
- o DX directive is supported only when building an exe file
-
- $2.109:
- o SNMAOPT caused spurious hunks if certain type of instruction
- were ahead of it.
- o XDEFs went to the hunk where the XDEF directive was, not to the
- hunk where symbol was defined.
- o In RS and FO directives, omitting label is now allowed, which will
- cause RS or FO to set, but no symbol to be defined.
- o In "move Label,<ea>" PC-relative optimizing caused spurious code
- in the certain <ea>'s - for example if <ea> was offset(An).
- o Tst address and cmpi #x,address reloc32 info was missing if
- 68000 targetted code and multiple passes in optimization.
- o Lea to addq/subq if possible. Snmaopt F flag controls.
- o Adda/suba to lea if possible. Snmaopt Q flag controls.
- o Adda/suba to addq/subq and new snmaopt flag F which controls
- optimizations which will change the condition code register result.
- It defaults off.
- o Nested REPTs (not allowed) don't produce nested error messages.
- o Bcc.L is not anymore allowed if 020> cpu is not target.
- o When using case-insensitive symbols, XREF/XDEF symbols were not
- recognized.
- o GETERR ARexx command can return RESULT strings. (UNTESTED !)
- o INFO2 ARexx command which returns RESULT strings (one at time) instead
- of STEM variables like INFO ARexx command.
- o UNDEF directive to undefine symbols.
-
- V2.04
- o <symb>(An,Dx) didn't produced right address mode if <symb> started
- with a 'z' or 'Z' (Yes, zero suppressed stuff again...argh).
- o Forgot to document data range checking. IMMSIZECHECK toggle.
- o Incbin failed to Close() file if there were errors in assembly.
- o btst dn,(d16,pc) didn't set the offset.
- o XDEF definitions went always to first section (hunk).
- o \*DATE() got option v which produces dd.mm.yy formatted date.
-
-
- V2.03
- o One bug fixed from the option file loading, which caused random
- crash.
- o Bitfields can be defined like "<ea>,{o:w}".
- o Some movec problems disappeared (this one is little mysterious,
- since I didn't touch the whole movec thing).
- o In ARexx mode, snma could flag some addressing modes as invalid,
- because certain data structures had spurious values left from
- the previous assembly.
- o ARexx SET command works again.
- o In (BD,An,Xn) register equates, which started with z, were not
- recognized.
- o QUIET switch disables now all output to Output().
- o If expression ended to operator, snma read one long from the address
- which was fetched from the string (one indirection too much). This
- could cause buserr exception in 68000, depending on value it read.
- o @ character is now normal symbol character, by default.
- @ character in the beginning of symbol meant octal number specifier.
- Since SAS/C uses it in the beginning of __regargs function names,
- its behaviour has been changed. Use OCT commandline toggle to
- allow octal numbers. There was also a bug, which caused no error
- telling in @symbol case, when it was actually coded as octal number
- - unsuccessfully.
-
- V2.02
- o BSS sections didn't honor mem type bits.
- o Sometimes pc-relative addressing modes allowed small data references.
- (if small data references were allowed).
- o RTM was coded badly.
- o Forcing Base Displacement to word or long didn't always work.
- o " macro <macroname>" finally works.
-
- V2.00
- o (An,Xn) is finally allowed in 68000/010 cpu mode.
- o tst lab was optimized to tst lab(pc) when only 68000/010 cpu was
- allowed.
- o Power ('^^') operator
- o EOR/XOR ('^') operator ended expression
- o Bitfield offset and width can now be defined after they use.
- o Various small bugs fixed
- o xdef and xref caused crash if operands had illegal chars.
- o Floating point numbers with exponent were incorrect.
- o FTENTOX was coded badly.
- o CNUL, DX and MOVE16 caused snma to guru when generating
- listing file.
- o When running out of mem, requester allows retry.
- o Memory usage for the end message (shell interface).
- o Pre-defined (commandline & optfile) symbols.
- o Macros with MEXIT and ENDC won't miss the ENDC.
- o Immediate data range checking can be turned off and it works
- for symbols which are declared after use.
- o Pre-assembled include files, which contain symbol and macro
- definitions of include files (was in V1.99 but I forget to
- mention it here). See INCLUDE and Arexx/MAKEGB docs.
- o ADDGB ARexx command lost main source file symbols after one
- INCLUDE operation. ADDGB is now a bit slower when there are many
- symbols, but it works as intended.
- o Bitfield stuff was broken in V1.99.
-
- V1.99
- o Relative-relative (difference between labels) symbol was set as
- relative (ext_def) instead of correct ext_abs when xdef'ed.
- o Arexx startup now toggles snma on/off.
- o Some bugs from INCBIN removed.
- o "=" operator didn't produce FALSE (0) if the operands were not
- equal.
- o '040 stuff. MOVE16, CINV, CPUSH, MMU & FPU commands. Special regs.
- o Object file is no longer deleted if snma is trying to produce
- executable and there are errors and vice-versa.
- o Floating point equate file equates were screwed up as well as
- packed type conversion (nobody seems to use this :).
- o CASESEN=OFF caused xdefs to fail.
- o local symbols .l and .w were mixed up with long and word suffix,
- resulting enforcer hit and garbage expression.
- o Dcb directive works now like ds directive if it has only one
- parameter.
- o Lists with two successive commas are now handled (like x,,y).
- o Searches include files also from the directory where snma was
- started from (used to search only from where source file is).
-
- V1.97
- o Case-insensitive symbol names option.
- o ELSE directive works now.
- o Some new directives (types.i stuff mainly).
- o New expression handler (boolean operators).
- o IFs were tested even if assembly was toggled off.
- o Some errenous expressions - like (A)A - don't crash anymore.
- o Multilevel optimizing.
- o Macro directive allows macro name as parameter.
- o DX directive (BSS to code or data hunk).
- o Absolute+Relative bug fixed (if in different hunks).
- o divu.l works (argh).
- o LINE DEBUG HUNK
- o Octal numbers.
-
- V1.95
- o ERRCOLOR keyword in template. Highlight error char.
- o AREXX/REMGB without parameters didn't work (+ fixed one mungwall hit
- from it).
- o QUIET startup switch disables only startup message. (You can redirect
- output to the nil: if you don't want any output).
- o SNMAOPT M controls now movem optimizing.(It was in Q flag).
- o End message is now little different in shell mode.
- o OPT directice changed to SNMAOPT to avoid any confusion.
- o fmovecr generated also extended immediate data.
- o Output file naming failed with ".s" extension (ooouups).
- o Behaves little better when running out of memory.
- o LABEL INCBIN <file>, LABEL get wrong value. (Veli Nuutimäki).
- o NULL byte in source ends it (to avoid to assemble binaries).
- o SELFCHECK arexx command.
- o Fmove.l #imm,fpcr works.
- o FBxx works now (Eric Augustine).
- o shift/rotate to <ea> generated spurious code.
- o INDEX register scale was allowed in 68000/010.
- o CNOP started to act like maniac if PC was more than 2^16.
- o addq/subq with undefined (at 1st pass) value, caused snma to begin
- 'flying high again' actions. (Gunther Nikl).
- o "'" or '"' works now (Gunther Nikl).
- o HUNK_RELOC32SHORT (implemented as 1015) to executables.
- o Produces also executables. (Laura Mahoney).
- o OPT A (address mode optimizing) was implemented as OPT E.
- o code_f, data_f, bss_f section types were not recognized.
- o FO, CLRFO, SETFO directives.
- o RS, RSRESET. RSSET directives (Marco Nelissen).
- o 'Old syntax' address mode had problems when base displacement had
- parenthesis around it.
- o Allows 99 macro parameters plus "<something>" parameters.
-
-
- V1.91
- o if any of cmpa operands had symbol which was relative or not defined
- in pass1, snma had serious problems.
- o If macro called another macro, \@ (unique label for one macro call)
- was different before the another macro call and after it.
- o Symbols which had only one char were not handled correctly.
-
- V1.90
- o moveq didn't allow xref'd data.
- o mc68xxx directives
- o Command line additions ([-option])
- o Object code naming now also checks ".s" and ".a" suffix.
- o OBJ filename in template was ignored (oh my).
- o tst with pc-relative was allowed on 68000 mode.
- o ext_ref symbols with same name were written many times, causing
- larger object file size (not actual code size).
- o xdef symbols were written to the all sections.
- o divu.l wasn't allowed.
- o Equates with relative components are handled better now.
- o Minimal WorkBench support
- o \*VALOF() + other macro 'insert functions'.
- o abslong to pc-relative optimizing.
- o DC generated too much data if the 2nd operand of the
- previous instruction was one which took some space.
- o REPT/ENDR directives
- o Global symbol table.
- o In cases where reloc was needed didn't create it, when
- symbol referred to equate which type was relative.
- o Equates with relative components are no longer written to
- the symbol list.
- o CHDIR (AREXX) command called FreeVec with wrong argument,
- causing memory loss (no crash, at least in my system).
-
- V1.70
- o BTST/BCHG/BSET/BCLR Dn,<ea> set always <ea> as d0. (uups)
- o MOVEP didn't allow zero displacement.
- o ENDC switched assembly on sometimes when it shouldn't.
-
- V1.68
- o Some minor bug fixes and changes (okay, I forgot them).
-
- V1.65
- o Address components which started with 'Z' or 'z' were
- parsed to the totally wrong thing. (Bad one).
- o IFGT did unsigned test, instead of signed.
- o Didn't notice all cases when macro was already defined.
- o Include <devicename:filepath> didn't work.
- o Expression handler didn't catch all undefined symbols.
- o AREXX, SET command.
- o 'TST An' in 020+ mode wasn't allowed.
- o Destination address mode optimizing in move instruction
- generated spurious opcodes in some cases.
- o Movem->move optimizing.
-
- V1.60
- o AREXX PORT finally added
- o Several bugs fixed
- o LONGBRA flag to the template
- o ZAn no longer required if An omitted in addressing mode.
-
-
- ========================================================================
-
- Probaply I don't remember all the changes and fixed bugs, but I
- hope all the major ones are here.
-
- First released version of SNMA is 1.39.
-